package org.jsola.hr.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.core.vo.BaseVO;

import java.util.Date;

import static org.jsola.core.example.BaseExample.*;
import static org.jsola.hr.example.AttendPunchDailyReportExample.N_COMPANY_NAME;
import static org.jsola.hr.example.AttendPunchStaffExample.E_COMPANY_NAME;
import static org.jsola.hr.example.EmpInfoExample.*;

/**
 * 员工信息
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "【员工信息】详情展示对象")
@Data
public class EmpInfoVO extends BaseVO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_ID, example = E_ID)
    private String id;

    @ApiModelProperty(notes = N_EMP_SOC_STATUS, example = E_EMP_SOC_STATUS)
    private Integer empSocStatus;

    @ApiModelProperty(notes = N_PLAN_INCREASE_DATE, example = E_PLAN_INCREASE_DATE)
    private Date planIncreaseDate;

    @ApiModelProperty(notes = N_PLAN_STOP_SOC_DATE, example = E_PLAN_STOP_SOC_DATE)
    private Date planStopSocDate;

    @ApiModelProperty(notes = N_SOC_DATE, example = E_SOC_DATE)
    private Date socDate;

    @ApiModelProperty(notes = N_STOP_SOC_DATE, example = E_STOP_SOC_DATE)
    private Date stopSocDate;

    @ApiModelProperty(notes = N_SOC_PROG_ID, example = E_SOC_PROG_ID)
    private String socProgId;

    @ApiModelProperty(notes = N_SEALED_DATE, example = E_SEALED_DATE)
    private Date sealedDate;

    @ApiModelProperty(notes = N_COMPANY_BEGIN_PAY_DATE, example = E_COMPANY_BEGIN_PAY_DATE)
    private Date companyBeginPayDate;

    @ApiModelProperty(notes = N_INCREASE_DATE, example = E_INCREASE_DATE)
    private String increaseDate;

    @ApiModelProperty(notes = N_CERTIFICATE_TYPE, example = E_CERTIFICATE_TYPE)
    private Integer certificateType;

    @ApiModelProperty(notes = N_NATIONALITY, example = E_NATIONALITY)
    private String nationality;

    @ApiModelProperty(notes = N_EMPLOYMENT_TYPE, example = E_EMPLOYMENT_TYPE)
    private String employmentType;

    @ApiModelProperty(notes = N_EMP_AGE, example = E_EMP_AGE)
    private Integer empAge;

    @ApiModelProperty(notes = N_RETIREMENT_AGE, example = E_RETIREMENT_AGE)
    private Integer retirementAge;

    @ApiModelProperty(notes = N_USER_ID, example = E_USER_ID)
    private String userId;

    @ApiModelProperty(notes = N_UNION_ID, example = E_UNION_ID)
    private String unionId;

    @ApiModelProperty(notes = N_PRE_JOIN_DEP, example = E_PRE_JOIN_DEP)
    private String preJoinDep;

    @ApiModelProperty(notes = N_PRE_JOIN_POSITION, example = E_PRE_JOIN_POSITION)
    private String preJoinPosition;

    @ApiModelProperty(notes = N_NUMBER, example = E_NUMBER)
    private String number;

    @ApiModelProperty(notes = N_NAME, example = E_NAME)
    private String name;

    @ApiModelProperty(notes = N_NAME_PINYIN, example = E_NAME_PINYIN)
    private String namePinyin;

    @ApiModelProperty(notes = N_ID_CARD, example = E_ID_CARD)
    private String idCard;

    @ApiModelProperty(notes = N_NATION, example = E_NATION)
    private String nation;

    @ApiModelProperty(notes = N_BIRTHDAY, example = E_BIRTHDAY)
    private String birthday;

    @ApiModelProperty(notes = N_GENDER, example = E_GENDER)
    private Integer gender;

    @ApiModelProperty(notes = N_CONTRACT_SUBJECT, example = E_CONTRACT_SUBJECT)
    private String contractSubject;

    @ApiModelProperty(notes = N_PHONE, example = E_PHONE)
    private String phone;

    @ApiModelProperty(notes = N_EMAIL, example = E_EMAIL)
    private String email;

    @ApiModelProperty(notes = N_EMP_PHOTO, example = E_EMP_PHOTO)
    private String empPhoto;

    @ApiModelProperty(notes = N_HIGHEST_EDUCATION, example = E_HIGHEST_EDUCATION)
    private String highestEducation;

    @ApiModelProperty(notes = N_MARITAL_STATUS, example = E_MARITAL_STATUS)
    private Integer maritalStatus;

    @ApiModelProperty(notes = N_BIRTH_STATUS, example = E_BIRTH_STATUS)
    private Integer birthStatus;

    @ApiModelProperty(notes = N_CHANNEL_ID, example = E_CHANNEL_ID)
    private String channelId;

    @ApiModelProperty(notes = N_POLITICAL_STATUS, example = E_POLITICAL_STATUS)
    private Integer politicalStatus;

    @ApiModelProperty(notes = N_PARTY_DATE, example = E_PARTY_DATE)
    private Date partyDate;

    @ApiModelProperty(notes = N_PARTY_SITE, example = E_PARTY_SITE)
    private String partySite;

    @ApiModelProperty(notes = N_BIRTHPLACE, example = E_BIRTHPLACE)
    private String birthplace;

    @ApiModelProperty(notes = N_NATIVE_LOCATION, example = E_NATIVE_LOCATION)
    private String nativeLocation;

    @ApiModelProperty(notes = N_REG_TYPE, example = E_REG_TYPE)
    private Integer regType;

    @ApiModelProperty(notes = N_CURRENT_ADDR_ID, example = E_CURRENT_ADDR_ID)
    private String currentAddrId;

    @ApiModelProperty(notes = N_CURRENT_LOCATION, example = E_CURRENT_LOCATION)
    private String currentLocation;

    @ApiModelProperty(notes = N_COMPANY_ID, example = E_COMPANY_ID)
    private String companyId;

    @ApiModelProperty(notes = N_COMPANY_NAME, example = E_COMPANY_NAME)
    private String companyName;

    @ApiModelProperty(notes = N_BANK_CARD, example = E_BANK_CARD)
    private String bankCard;

    @ApiModelProperty(notes = N_BANK_NAME, example = E_BANK_NAME)
    private String bankName;

    @ApiModelProperty(notes = N_BANK_CARD_BRANCH, example = E_BANK_CARD_BRANCH)
    private String bankCardBranch;

    @ApiModelProperty(notes = N_BANK_PLACE_ID, example = E_BANK_PLACE_ID)
    private String bankPlaceId;

    @ApiModelProperty(notes = N_BANK_PLACE, example = E_BANK_PLACE)
    private String bankPlace;

    @ApiModelProperty(notes = N_SOC_TYPE, example = E_SOC_TYPE)
    private Boolean socType;

    @ApiModelProperty(notes = N_IS_FIRST_SOC, example = E_IS_FIRST_SOC)
    private Boolean isFirstSoc;

    @ApiModelProperty(notes = N_SOC_CARD, example = E_SOC_CARD)
    private String socCard;

    @ApiModelProperty(notes = N_IS_FIRST_PF, example = E_IS_FIRST_PF)
    private Boolean isFirstPf;

    @ApiModelProperty(notes = N_PF_CARD, example = E_PF_CARD)
    private String pfCard;

    @ApiModelProperty(notes = N_HEALTH_CONDITION, example = E_HEALTH_CONDITION)
    private String healthCondition;

    @ApiModelProperty(notes = N_HAS_WEIGHTY_MEDICAL_HIS, example = E_HAS_WEIGHTY_MEDICAL_HIS)
    private Boolean hasWeightyMedicalHis;

    @ApiModelProperty(notes = N_JOB_TITLE, example = E_JOB_TITLE)
    private String jobTitle;

    @ApiModelProperty(notes = N_JOIN_WORK_DATE, example = E_JOIN_WORK_DATE)
    private Date joinWorkDate;

    @ApiModelProperty(notes = N_WORKING_UNIT_NAME, example = E_WORKING_UNIT_NAME)
    private String workingUnitName;

    @ApiModelProperty(notes = N_PUTONGHUA_LEVEL, example = E_PUTONGHUA_LEVEL)
    private String putonghuaLevel;

    @ApiModelProperty(notes = N_SPECIALITY, example = E_SPECIALITY)
    private String speciality;

    @ApiModelProperty(notes = N_PRIZE_WINNING, example = E_PRIZE_WINNING)
    private String prizeWinning;

    @ApiModelProperty(notes = N_ENGLISH_LEVEL, example = E_ENGLISH_LEVEL)
    private String englishLevel;

    @ApiModelProperty(notes = N_NCRE_LEVEL, example = E_NCRE_LEVEL)
    private String ncreLevel;

    @ApiModelProperty(notes = N_TARGET_POST, example = E_TARGET_POST)
    private String targetPost;

    @ApiModelProperty(notes = N_ANNEX_ID_CARD, example = E_ANNEX_ID_CARD)
    private String annexIdCard;

    @ApiModelProperty(notes = N_ANNEX_HOUSEHOLD, example = E_ANNEX_HOUSEHOLD)
    private String annexHousehold;

    @ApiModelProperty(notes = N_ANNEX_DIPLOMA, example = E_ANNEX_DIPLOMA)
    private String annexDiploma;

    @ApiModelProperty(notes = N_ANNEX_DEGREE, example = E_ANNEX_DEGREE)
    private String annexDegree;

    @ApiModelProperty(notes = N_ANNEX_PRACTISING, example = E_ANNEX_PRACTISING)
    private String annexPractising;

    @ApiModelProperty(notes = N_ANNEX_MAJOR, example = E_ANNEX_MAJOR)
    private String annexMajor;

    @ApiModelProperty(notes = N_ANNEX_REWARD, example = E_ANNEX_REWARD)
    private String annexReward;

    @ApiModelProperty(notes = N_ANNEX_NO_CRIMINAL, example = E_ANNEX_NO_CRIMINAL)
    private String annexNoCriminal;

    @ApiModelProperty(notes = N_ANNEX_BLACK_WHITE_PHOTO, example = E_ANNEX_BLACK_WHITE_PHOTO)
    private String annexBlackWhitePhoto;

    @ApiModelProperty(notes = N_ANNEX_PTH_LEVEL, example = E_ANNEX_PTH_LEVEL)
    private String annexPthLevel;

    @ApiModelProperty(notes = N_ANNEX_ENGLISH_LEVEL, example = E_ANNEX_ENGLISH_LEVEL)
    private String annexEnglishLevel;

    @ApiModelProperty(notes = N_ANNEX_NCRE_LEVEL, example = E_ANNEX_NCRE_LEVEL)
    private String annexNcreLevel;

    @ApiModelProperty(notes = N_ANNEX_DRIVING_LICENSE, example = E_ANNEX_DRIVING_LICENSE)
    private String annexDrivingLicense;

    @ApiModelProperty(notes = N_ANNEX_PERSON_PHOTO, example = E_ANNEX_PERSON_PHOTO)
    private String annexPersonPhoto;

    @ApiModelProperty(notes = N_ANNEX_SALARY_CARD, example = E_ANNEX_SALARY_CARD)
    private String annexSalaryCard;

    @ApiModelProperty(notes = N_ANNEX_SOC_CARD, example = E_ANNEX_SOC_CARD)
    private String annexSocCard;

    @ApiModelProperty(notes = N_ANNEX_PF_CARD, example = E_ANNEX_PF_CARD)
    private String annexPfCard;

    @ApiModelProperty(notes = N_ANNEX_LABOR_CONTRACT, example = E_ANNEX_LABOR_CONTRACT)
    private String annexLaborContract;

    @ApiModelProperty(notes = N_ANNEX_ONB_RESUME, example = E_ANNEX_ONB_RESUME)
    private String annexOnbResume;

    @ApiModelProperty(notes = N_ANNEX_ONB_CHECKUP, example = E_ANNEX_ONB_CHECKUP)
    private String annexOnbCheckup;

    @ApiModelProperty(notes = N_ANNEX_LAST_LEAVE_CERT, example = E_ANNEX_LAST_LEAVE_CERT)
    private String annexLastLeaveCert;

    @ApiModelProperty(notes = N_ANNEX_WORK_APPLY, example = E_ANNEX_WORK_APPLY)
    private String annexWorkApply;

    @ApiModelProperty(notes = N_ANNEX_ADJUST_NOTICE, example = E_ANNEX_ADJUST_NOTICE)
    private String annexAdjustNotice;

    @ApiModelProperty(notes = N_ANNEX_PERSONAL_CHANGE, example = E_ANNEX_PERSONAL_CHANGE)
    private String annexPersonalChange;

    @ApiModelProperty(notes = N_ANNEX_SOC_TRANSFER, example = E_ANNEX_SOC_TRANSFER)
    private String annexSocTransfer;

    @ApiModelProperty(notes = N_ANNEX_PERFORMANCE_REPORT, example = E_ANNEX_PERFORMANCE_REPORT)
    private String annexPerformanceReport;

    @ApiModelProperty(notes = N_ANNEX_OTHER_INFOS, example = E_ANNEX_OTHER_INFOS)
    private String annexOtherInfos;

    @ApiModelProperty(notes = N_ANNEX_LEAVE_APPRO, example = E_ANNEX_LEAVE_APPRO)
    private String annexLeaveAppro;

    @ApiModelProperty(notes = N_ANNEX_LEAVE_CERT, example = E_ANNEX_LEAVE_CERT)
    private String annexLeaveCert;

    @ApiModelProperty(notes = N_ANNEX_LEAVE_APPLY, example = E_ANNEX_LEAVE_APPLY)
    private String annexLeaveApply;

    @ApiModelProperty(notes = N_ANNEX_HANDOVER_TABLE, example = E_ANNEX_HANDOVER_TABLE)
    private String annexHandoverTable;

    @ApiModelProperty(notes = N_SUPERVISOR, example = E_SUPERVISOR)
    private String supervisor;

    @ApiModelProperty(notes = N_EMPLOY_TYPE, example = E_EMPLOY_TYPE)
    private Boolean employType;

    @ApiModelProperty(notes = N_INFORMAL_TYPE, example = E_INFORMAL_TYPE)
    private Integer informalType;

    @ApiModelProperty(notes = N_FORMAL_TYPE, example = E_FORMAL_TYPE)
    private Integer formalType;

    @ApiModelProperty(notes = N_IS_IMPROVE, example = E_IS_IMPROVE)
    private Boolean isImprove;

    @ApiModelProperty(notes = N_POST_TYPE, example = E_POST_TYPE)
    private Integer postType;

    @ApiModelProperty(notes = N_CONTRACTS_STATUS, example = E_CONTRACTS_STATUS)
    private Integer contractsStatus;

    @ApiModelProperty(notes = N_MANAGER_FORM, example = E_MANAGER_FORM)
    private Integer managerForm;

    @ApiModelProperty(notes = N_WORK_CITY_ID, example = E_WORK_CITY_ID)
    private String workCityId;

    @ApiModelProperty(notes = N_ISSUED_BY, example = E_ISSUED_BY)
    private String issuedBy;

    @ApiModelProperty(notes = N_CARD_START_DATE, example = E_CARD_START_DATE)
    private String cardStartDate;

    @ApiModelProperty(notes = N_CARD_END_DATE, example = E_CARD_END_DATE)
    private String cardEndDate;

    @ApiModelProperty(notes = N_WORK_CITY, example = E_WORK_CITY)
    private String workCity;

    @ApiModelProperty(notes = N_JOIN_FORM_STATUS, example = E_JOIN_FORM_STATUS)
    private Boolean joinFormStatus;

    @ApiModelProperty(notes = N_PRE_JOIN_DATE, example = E_PRE_JOIN_DATE)
    private Date preJoinDate;

    @ApiModelProperty(notes = N_JOIN_DATE, example = E_JOIN_DATE)
    private Date joinDate;

    @ApiModelProperty(notes = N_PROBATION, example = E_PROBATION)
    private Integer probation;

    @ApiModelProperty(notes = N_PROBATION_DAYS, example = E_PROBATION_DAYS)
    private Integer probationDays;

    @ApiModelProperty(notes = N_TURN_STRAIGHT_DATE, example = E_TURN_STRAIGHT_DATE)
    private Date turnStraightDate;

    @ApiModelProperty(notes = N_LEAVE_DATE, example = E_LEAVE_DATE)
    private Date leaveDate;

    @ApiModelProperty(notes = "公司名称")
    private String company;

    @ApiModelProperty(notes = "职务")
    private String position;

    @ApiModelProperty(notes = "工作开始时间")
    private Date workStartTime;

    @ApiModelProperty(notes = "工作结束时间")
    private Date workEndTime;

    @ApiModelProperty(notes = "证明人")
    private String witName;

    @ApiModelProperty(notes = "证明人联系电话")
    private String witPhone;

    @ApiModelProperty(notes = N_LEAVE_REASON, example = E_LEAVE_REASON)
    private String leaveReason;

    @ApiModelProperty(notes = "离职薪资")
    private Integer leaveSalary;

    @ApiModelProperty(notes = "工作备注")
    private String workRemark;

    @ApiModelProperty(notes = "培训名称")
    private String trainCourse;

    @ApiModelProperty(notes = "培训单位")
    private String trainOrgName;

    @ApiModelProperty(notes = "培训开始时间")
    private Date trainStartTime;

    @ApiModelProperty(notes = "培训结束时间")
    private Date trainEndTime;

    @ApiModelProperty(notes = "培训成绩")
    private String assessResult;

    @ApiModelProperty(notes = "培训证书名称")
    private String trainCerName;

    @ApiModelProperty(notes = "培训证书编号")
    private String trainCerNumber;

    @ApiModelProperty(notes = "培训备注")
    private String remake;

    @ApiModelProperty(notes = N_CHANGE_STATUS, example = E_CHANGE_STATUS)
    private Integer changeStatus;

    @ApiModelProperty(notes = N_VERIFIED, example = E_VERIFIED)
    private Boolean verified;

    @ApiModelProperty(notes = N_STATUS, example = E_STATUS)
    private Integer status;

    @ApiModelProperty(notes = N_APPROVAL_STATUS, example = E_APPROVAL_STATUS)
    private Integer approvalStatus;

    @ApiModelProperty(notes = N_ARRIVAL, example = E_ARRIVAL)
    private Boolean arrival;

    @ApiModelProperty(notes = N_JOIN_CITY_CODE, example = E_JOIN_CITY_CODE)
    private String joinCityCode;

    @ApiModelProperty(notes = N_ARCHIVES_NUMBER, example = E_ARCHIVES_NUMBER)
    private String archivesNumber;

    @ApiModelProperty(notes = N_JOIN_CITY_NAME, example = E_JOIN_CITY_NAME)
    private String joinCityName;

    @ApiModelProperty(notes = N_ARCHIVES_REMAKE, example = E_ARCHIVES_REMAKE)
    private String archivesRemake;

    @ApiModelProperty(notes = N_RECRUIT_CHANNELS, example = E_RECRUIT_CHANNELS)
    private String recruitChannels;

    @ApiModelProperty(notes = N_RETIREMENT_STATUS, example = E_RETIREMENT_STATUS)
    private Boolean retirementStatus;

    @ApiModelProperty(notes = N_RETIREMENT_DATE, example = E_RETIREMENT_DATE)
    private Date retirementDate;

    @ApiModelProperty(notes = N_RETIREMENT_REMARK, example = E_RETIREMENT_REMARK)
    private String retirementRemark;

    @ApiModelProperty(notes = N_BLOOD_GROUP, example = E_BLOOD_GROUP)
    private Integer bloodGroup;

    @ApiModelProperty(notes = N_ANNEX_NO_PREGNANT, example = E_ANNEX_NO_PREGNANT)
    private String annexNoPregnant;

    @ApiModelProperty(notes = N_ANNEX_LEAVING, example = E_ANNEX_LEAVING)
    private String annexLeaving;

    @ApiModelProperty(notes = N_SALARY_TYPE, example = E_SALARY_TYPE)
    private Integer salaryType;

    @ApiModelProperty(notes = N_ALIPAY_ACCOUNT, example = E_ALIPAY_ACCOUNT)
    private String alipayAccount;

    @ApiModelProperty(notes = N_SALARY_RULE_ID, example = E_SALARY_RULE_ID)
    private String salaryRuleId;

    @ApiModelProperty(notes = N_SERVICE_FEE_RULE_ID, example = E_SERVICE_FEE_RULE_ID)
    private String serviceFeeRuleId;

    @ApiModelProperty(notes = N_REMARK, example = E_REMARK)
    private String remark;

    @ApiModelProperty(notes = N_TAG, example = E_TAG)
    private String tag;

    @ApiModelProperty(notes = N_SITE_ID, example = E_SITE_ID)
    private String siteId;

    @ApiModelProperty(notes = N_GMT_CREATE, example = E_GMT_CREATE)
    private Date gmtCreate;

    @ApiModelProperty(notes = N_CREATE_USER_ID, example = E_CREATE_USER_ID)
    private String createUserId;

    @ApiModelProperty(notes = N_GMT_MODIFIED, example = E_GMT_MODIFIED)
    private Date gmtModified;

    @ApiModelProperty(notes = N_MODIFIED_USER_ID, example = E_MODIFIED_USER_ID)
    private String modifiedUserId;

    @ApiModelProperty(notes = N_IS_VALID, example = E_IS_VALID)
    private Boolean valid;

    @ApiModelProperty(notes = "渠道相关信息")
    private ChannelVO channelVO;

    @ApiModelProperty(notes = "录入人名字")
    private String inputName;

    @ApiModelProperty(notes = "渠道名字")
    private String channelName;

    @ApiModelProperty(notes = "录入方式(1:网页端，2手机端，3用工单位)")
    private Integer sourceType;

    @ApiModelProperty(notes = "起缴时间")
    private String startPaymentDate;

    @ApiModelProperty(notes = "参保城市")
    private String insuredCity;

    @ApiModelProperty(notes = "成员姓名")
    private String familyName;

    @ApiModelProperty(notes = "联系电话")
    private String familyPhone;

    @ApiModelProperty(notes = "与我的关系（家庭成员）")
    private String familyRelation;

    @ApiModelProperty(notes = "工作单位")
    private String familyWorkUnit;

    @ApiModelProperty(notes = "联系人姓名")
    private String contactsName;

    @ApiModelProperty(notes = "联系电话")
    private String contactsPhone;

    @ApiModelProperty(notes = "与我的关系（紧急联系人）")
    private String contactsRelation;

    @ApiModelProperty(notes = "联系人地址")
    private String contactsAddress;

    /**
     * 学历（1：小学，2：初中，3：中专，4：高中，5：大专，6：本科，7：硕士，8：博士，9：其他）
     */
    private Integer education;
    /**
     * 毕业院校
     */
    private String graCollege;
    /**
     * 专业
     */
    private String major;
    /**
     * 入学时间
     */
    private Date startTime;
    /**
     * 毕业时间
     */
    private Date endTime;
    /**
     * 入学时间
     */
    private Date eduStartTime;
    /**
     * 毕业时间
     */
    private Date eduEndTime;
    /**
     * 教学方式（1：统招全日制，2：自考，3：成考，4：其他）
     */
    private String teaMethods;
    /**
     * 毕业证书编号
     */
    private String graCerNumber;
    /**
     * 学位类型（1：学士，2：硕士，3：博士，4：未获得学位）
     */
    private Integer degreeType;
    /**
     * 学位名称
     */
    private String degreeName;
    /**
     * 学位证书编号
     */
    private String degreeNumber;
    /**
     * 教育备注
     */
    private String educationRemark;
    /**
     * 奖惩类型（1：奖励，2：惩罚）
     */
    private Integer rewardPunish;
    /**
     * 奖励类别（1：通报表扬，2：年度优秀员工奖，3：特殊贡献奖）
     */
    private Integer rewardType;
    /**
     * 惩罚类别（1：通报批评，2：警告，3：严重警告，4：记过处分，5：辞退处分）
     */
    private Integer punishType;
    /**
     * 奖惩日期
     */
    private Date handleDate;
    /**
     * 奖惩内容
     */
    private String content;
    /**
     * 奖惩金额
     */
    private Integer amount;
    /**
     * 奖惩原因
     */
    private String reason;
    /**
     * 奖惩备注
     */
    private String rewardsRemark;

    @ApiModelProperty(notes = "性别")
    private String sex;

}

